﻿@{
    ViewBag.Title = "频道URL配置";
}
<form id="form1" class="layui-form">
    <div class="div-content">
        <div class="layui-form-item">
            <label class="layui-form-label">频道类型</label>
            <div class="layui-input-block">
                <select id="pageType" class="select">
                    <option value="">请选择类型...</option>
                    <option value="index">首页</option>
                    <option value="category">栏目页</option>
                    <option value="list">列表页</option>
                    <option value="detail">详细页</option>
                    <option value="other">其他页</option>
                </select>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">调用名称</label>
            <div class="layui-input-block">
                <input type="text" id="urlKey" class="input txt" />
                <span>*调用的唯一标识，英文、数字、下划线</span>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">生成文件名</label>
            <div class="layui-input-block">
                <input type="text" id="urlPage" value="" class="input txt" /> .cshtml
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">模板文件名</label>
            <div class="layui-input-block">
                <input type="text" id="pageTemplet" value="" class="input txt" /> .cshtml
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">分页大小</label>
            <div class="layui-input-block">
                <input type="text" id="urlPageSize" value="" class="input small" onkeydown="return checkNumber(event);" /> 条
                <span>只有当需要分页时才设置该值</span>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">URL表达式</label>
            <div class="layui-input-block">
                <a id="btnVarAdd" class="layui-btn layui-btn-primary icon-btn"><i class="iconfont icon-add"></i> 添加表达式</a>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label"></label>
            <div class="layui-input-block">
                <table border="0" cellspacing="0" cellpadding="0" class="border-table" width="550">
                    <thead>
                        <tr>
                            <th width="30%">重写表达式</th>
                            <th width="30%">正则表达式</th>
                            <th width="30%">传输参数</th>
                            <th width="10%">操作</th>
                        </tr>
                    </thead>
                    <tbody id="var_box"></tbody>
                </table>
            </div>
        </div>
    </div>
</form>
<script type="text/html" id="createUrlHtml">
    <!--设置页面表格行内容-->
    <tr class="td_c">
        <td>
            <input type="text" name="itemPath" class="layui-input" style="width:90%;" readonly="readonly">
        </td>
        <td>
            <input type="text" name="itemPattern" class="layui-input" style="width:90%;" readonly="readonly">
        </td>
        <td><input type="text" name="itemQuerystring" class="layui-input" style="width:90%;" readonly="readonly"></td>
        <td>
            <a title="编辑" class="img-btn" onclick="showUrlDialog(this);"><i class="iconfont icon-edit"></i></a>
            <a title="删除" class="img-btn" onclick="delUrlNode(this);"><i class="iconfont icon-delete"></i></a>
        </td>
    </tr>
</script>
<script type="text/html" id="getTrHtml">
    <!--设置页面表格行内容-->
    <tr class="td_c">
        <td><input type="hidden" name="item_rewrite" /><input type="hidden" name="item_type" /><span class="item_type"></span></td>
        <td><input type="hidden" name="item_name" /><span class="item_name"></span></td>
        <td><input type="hidden" name="item_page" /><span class="item_page"></span></td>
        <td><input type="hidden" name="item_templet" /><span class="item_templet"></span></td>
        <td><input type="hidden" name="item_pagesize" /><span class="item_pagesize"></span></td>
        <td>
            <a title="编辑" class="img-btn" onclick="showChannelDialog(this);"><i class="iconfont icon-edit"></i></a>
            <a title="删除" class="img-btn" onclick="delItemTr(this);"><i class="iconfont icon-delete"></i></a>
        </td>
    </tr>
</script>
@section Scripts{
    <script type="text/javascript">
        var api = parent.layer.getFrameIndex(window.name); //获取父窗体对象
        layui.use(['form'], function () {
            var form = layui.form, $ = layui.jquery;

            //添加按钮(点击绑定)
            $("#btnVarAdd").click(function () {
                showUrlDialog();
            });

            //缓存
            $("#rblCache").click(function () {
                if ($(this).is(':checked')) {
                    $("#cachepath").show();
                    parent.layer.iframeAuto(api);
                } else {
                    $("#cachepath").hide();
                }
            });
        });
        function submitValue(data) {
            //检查是否添加
            if ($(data).length > 0) {
                var parentObj = $(data).parent().parent(); //取得节点父对象
                var item_type = parentObj.find("input[name='item_type']").val(); //页面类型
                $("#pageType option").each(function (i) {
                    if ($(this).attr("value") == item_type) {
                        $(this).prop("selected", true);
                    }
                });
                $("#urlKey").val(parentObj.find("input[name='item_name']").val()); //URL名称
                $("#urlPage").val(parentObj.find("input[name='item_page']").val().replace(".cshtml", "")); //生成文件名
                $("#cachePath").val(parentObj.find("input[name='item_path']").val()); //缓存路径
                $("#pageTemplet").val(parentObj.find("input[name='item_templet']").val().replace(".cshtml", "")); //模板文件名
                $("#urlPageSize").val(parentObj.find("input[name='item_pagesize']").val()); //分页大小
                //URL重写表达式
                var urlRewrite = parentObj.find("input[name='item_rewrite']").val();
                if (urlRewrite.length > 0) {
                    var urlRewriteArr = urlRewrite.split("&");
                    for (i = 0; i < urlRewriteArr.length; i++) {
                        var itemRewiteArr = urlRewriteArr[i].split(",");
                        if (itemRewiteArr.length > 0) {
                            //插入一行TR并赋值重写表达式
                            var trObj = $("#var_box").append($("#createUrlHtml").html());
                            $(trObj).children("tr").eq(i).find("input[name='itemPath']").val(itemRewiteArr[0]);
                            $(trObj).children("tr").eq(i).find("input[name='itemPattern']").val(itemRewiteArr[1]);
                            $(trObj).children("tr").eq(i).find("input[name='itemQuerystring']").val(itemRewiteArr[2]);
                        }
                    }
                }
            }
        }
        /*============================以下本页面方法================================*/
        //提交添加一行URL配置
        function submitForm(data) {
            var parentDocument = parent.layer.getFrameIndex(window.name); //获取父窗体对象
            var currDocument = $(document);
            var oldkey = ""; //旧的调用名称
            if ($(data).length > 0) {
                oldkey = $(data).parent().parent().find("input[name='item_name']").val();
            }
            if ($("#pageType").children("option:selected").attr("value") == "") {
                layer.alert('请选择频道类型！', {
                    closeBtn: 0
                }, function (index) {
                    $("#pageType", currDocument).focus();
                    layer.close(index);
                });
                return false;
            }
            if ($("#urlKey").val() == "") {
                layer.alert('请输入URL调用名称！', {
                    closeBtn: 0
                }, function (index) {
                    $("#urlKey", currDocument).focus();
                    layer.close(index);
                });
                return false;
            }
            if ($("#urlPage").val() == "") {
                layer.alert('请输入生成ASPX文件名称！', {
                    closeBtn: 0
                }, function (index) {
                    $("#urlPage", currDocument).focus();
                    layer.close(index);
                });
                return false;
            }
            if ($("#pageTemplet").val() == "") {
                layer.alert('请输入模板文件名称！', {
                    closeBtn: 0
                }, function (index) {
                    $("#pageTemplet", currDocument).focus();
                    layer.close(index);
                });
                return false;
            }
            //检查本地是否重复
            var checkKey = true;
            $("#item_box tr", parentDocument).each(function () {
                if ($("#urlKey").val() == $(this).find("input[name='item_name']").val() && $("#urlKey").val() != oldkey) {
                    checkKey = false;
                }
            });
            if (!checkKey) {
                layer.alert('对不起，URL调用名称已重复！', {
                    closeBtn: 0
                }, function (index) {
                    $("#urlKey", currDocument).focus();
                    layer.close(index);
                });
                return false;
            }
            //AJAX验证成功后则添加或修改
            var oldItemKey = "";
            if ($(data).length > 0) {
                if ($(data).parent().parent().find("input[name='old_item_name']").length > 0) {
                    oldItemKey = $(data).parent().parent().find("input[name='old_item_name']").val();
                }
            }
            $.ajax({
                type: "post",
                url: "/admin_ajax/urlrewrite_name_validate",
                data: { "param": $("#urlKey").val(), "old_name": oldItemKey },
                dataType: "json",
                success: function (ajaxdata, textStatus) {
                    if (ajaxdata.status == "y") {
                        if ($(data).length > 0) {
                            setNavRow($(data).parent().parent());
                        } else {
                            //创建TR
                            $("#item_box", parentDocument).append($("#getTrHtml").html());
                            setNavRow($("#item_box tr:last", parentDocument));
                        }
                        parent.layer.close(api);
                    } else {
                        layer.alert('对不起，AJAX检测URL调用名称已存在，<br />若旧名称已更改，请保存后方可使用该名称！', {
                            closeBtn: 0
                        }, function (index) {
                            $("#urlKey", currDocument).focus();
                            layer.close(index);
                        });
                        return false;
                    }
                }
            });
            return false;
        }

        //最终赋值给页面
        function setNavRow(obj) {
            //URL重写表达式
            var url_rewrite = "";
            $("#var_box tr").each(function (i) {
                if (i > 0) {
                    url_rewrite += "&";
                }
                if ($(this).find("input[name='itemPath']").val().length > 0) {
                    url_rewrite += $(this).find("input[name='itemPath']").val() + ","
                        + $(this).find("input[name='itemPattern']").val() + ","
                        + $(this).find("input[name='itemQuerystring']").val();
                }
            });
            $(obj).find("input[name='item_rewrite']").val(url_rewrite);
            //页面类型
            $(obj).find("input[name='item_type']").val($("#pageType").children("option:selected").attr("value"));
            $(obj).find(".item_type").html($("#pageType").children("option:selected").html());
            //URL名称
            $(obj).find("input[name='item_name']").val($("#urlKey").val());
            $(obj).find(".item_name").html($("#urlKey").val());
            //生成文件名
            $(obj).find("input[name='item_page']").val($("#urlPage").val() + ".cshtml");
            $(obj).find(".item_page").html($("#urlPage").val() + ".cshtml");
            //模板文件名
            $(obj).find("input[name='item_templet']").val($("#pageTemplet").val() + ".html");
            $(obj).find(".item_templet").html($("#pageTemplet").val() + ".html");
            //分页大小
            $(obj).find("input[name='item_pagesize']").val($("#urlPageSize").val());
            if ($("#urlPageSize").val() == "" || $("#urlPageSize").val() == "0") {
                $(obj).find(".item_pagesize").html("-");
            } else {
                $(obj).find(".item_pagesize").html($("#urlPageSize").val());
            }
        }
        /*============================以上本页面方法================================*/

        /*=============================以下窗口方法*/
        //创建窗口
        function showUrlDialog(obj) {
            var objNum = arguments.length;
            var d = layer.open({
                type: 2,
                area: ['700px', '400px'],
                title: "重写表达式",
                maxmin: true,
                content: '../dialog/dialog_rewrite',
                btn: ["确定", '关闭'],
                btn1: function (index, layero) {
                    var iframeWin = window[layero.find('iframe')[0]['name']];
                    var trHtml = iframeWin.submitForm(obj);
                    if (trHtml.length > 0) {
                        $("#var_box").append(trHtml);
                        parent.layer.iframeAuto(api); //刷新窗口大小
                        layer.close(index);
                    }
                },
                success: function (layero, index) {
                    var body = layer.getChildFrame('body', index);
                    var iframeWin = window[layero.find('iframe')[0]['name']];
                    //检查是否修改状态
                    if (objNum == 1) {
                        iframeWin.submitValue(obj);
                    }
                },
                cancel: function (index, layero) { }
            });
        }

        //删除节点
        function delUrlNode(obj) {
            $(obj).parent().parent().remove();
            parent.layer.iframeAuto(api);  //刷新窗口大小
        }
                    /*=============================以上窗口方法*/
    </script>
}